package com.atguigu.utils;


import java.util.concurrent.CountDownLatch;

//这个方法就是让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。
//通俗来说就是兜底最后一个线程，等待其他线程执行完毕后，自己才能执行。
//其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞)，
public class CountDownLatchDemo {
    public static void main(String[] args) throws InterruptedException {

        CountDownLatch countDownLatch = new CountDownLatch(5);

        for (int i = 0; i < 5; i++) {
            new Thread(() -> {
                System.out.println(Thread.currentThread().getName()+"\t"+"线程结束");
                countDownLatch.countDown();
            },String.valueOf(i)).start();
        }
        countDownLatch.await();
        System.out.println(Thread.currentThread().getName()+"所有线程结束");
    }
}
